package com.leetcode.linkedList;

import com.leetcode.basic.ListNode;

/**
 * @author Dennis Li
 * @date 2020/7/19 20:59
 */
public class AddTwoNumbers_2 {

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummy = new ListNode(-1);
        // 要达到固化结点的作用，不能使结点赋值给null
        ListNode p = dummy;
        int value = 0;
        // 1.当有10作为超界的时候，通过取余来进行计算求解
        // 2.有两个链条需要进行遍历的时候，注意对每个链表添加判空条件
        while (l1 != null || l2 != null || value != 0) {
            if(l1 != null) value += l1.val;
            if(l2 != null) value += l2.val;
            // 精髓，这里通过取余来对value超过10进行判定
            p.next = new ListNode(value % 10);
            p = p.next;
            value /= 10;
            if(l1 != null) l1 = l1.next;
            if(l2 != null) l2 = l2.next;
        }
        return dummy.next;
    }

}
